Project Management, Agility, Tests

J.-M. Bruel
jbruel@gmail.com
version 20.1 2020-11-02

Materials in live…​

This course is dedicated to my lost friend Jean-Michel Inglebert…​

blasonJMI

Projects management

What is a project ?

[…​] a project is an individual or collaborative enterprise, possibly involving research or design, that is carefully planned, usually by the project assigned team, to achieve a particular aim
2014, Wikipedia

Some facts…​

  • Start: was are the client needs expressed ?

    1. specifications,
    2. list of expected features,
    3. scenarios, use cases
    4. …​

  • End: when is the result product due ?

Avoid to answer : yesterday! (Otherwise it’s not a project anymore, but a rescue plan)

…​ and in between ?

Option 1

do your best by your own (like in 'DO the sales')

Option 2

run a process (like in '(RE)DO your passport')

Option 3

use project management techniques

How project management is doing so far …​

Out of 10, 7 projects are delivered late or never !

January 2014, Programmez! journal

How project management is doing so far …​

Possible reasons:

  • client expectations are vague
  • over-estimation of available resources
  • latency at the beginning
  • modification and updates get lost
  • overbooked teams
  • lost of knowledge during the project
  • risks are badly evaluated
  • meetings are not productive

How project management is doing so far …​

In any case, it’s the development team fault.

Often heard...

Why is it so hard ?

It should not be so hard:

  • The goal and target are well known (provided by the client)
  • The target satisfaction is often measurable (assessment)
The problem

There is no systematic method that can garanty that a project team will meet its goals.

Why ?

Because it requires to manage a domain complexity, a technical complexity and a human complexity, at the same time, with limited resources (time, money, …​)

Why is it so hard ?

In fact, the only predictable fact is :

it will be required to adapt!

What is a successfull project ?

A software project will end successfully if the team delivers an application that is reliable, robust and maintenable that meet the client expectations and need.

What is a successfull project ?

reliable

behave as expected in the expected conditions

robust

handle traffic, user mistakes, failures, etc.

maintenable

require few efforts to evolve

To produce applications

To produce applications

BUILD

make, ant, Maven, Ivy, Gradle, etc.

we’ll see that later (if needed)…​

Project Management tools

Methods

Waterfall and V Cycle

waterfall

Waterfall and V Cycle

The V cycle adopts:

  • Cascading descending phases for analysis and design
  • Followed by an ascending for coding, tests and integration.
Vcycle

In these kind of projects success means being able to go through the ascending branch of the 'V' successfully.

Waterfall and V Cycle

If project stops…​
  • No application can be delivered
  • At best some modules/classes can be reused
If project is late…​
  • coding and integration phases are shortened
  • delivered product is undertested

Waterfall and V Cycle

To summarize:

  • Cartesian way of reducing complexity
  • Test plans are produced in descending phases
  • Tests plans are veryfied during ascending phases

Waterfall and V Cycle

Well known limitations
  • absence of maintenance and evolution phases
  • going back to design is very difficult
  • Hard to estimate a priori: what is the estimated complexity of the project ?
  • Does the delivered application conform to its documentation (and vice versa) ?

From V cycles to W ones

Let’s consider a trivial example

Example 1. A web application for managing URLs

Develop a web application capable of collecting and displaying URLs.

Cycle 0

Setup of the integration infrastructure

Chosen solution:

  • Development langage: PHP
  • Infrastructure : LAMP server

Cycle 1

Display the collected URLs

Chosen solution:

  • The server stores a urls table
  • Web page is returned using GET and displays urls as a list

Cycle 2

To collect urls

Chosen solution:

  • Web page propose a form to enter new urls

Overall process

Overall process

w12

Overall process

w32

Overall process

w42

Overall process

w52

Overall process

w5b2

Overall process

w5rb2

Well known benefits

  • delivers an application that already runs in cycle 1
  • manage complexity and integration at each cycle
  • can be applied to a new development but also to an evolution
  • allows the client to adjust its requirements

Quizz

Complete the sentence we’ve seen before:

A software project will end successfully if the team delivers an application that is …​…​, …​…​. and …​…​…​.. that meet the client expectations and need.

Quizz

Complete the sentence we’ve seen before:

A software project will end successfully if the team delivers an application that is reliable, robust and maintenable that meet the client expectations and need.

When it does not work ?

  • client can’t be involved regularly
  • the driving of the method is approximative (delays in releases)
  • tests are left over

New problems

  • importance of the initial infrastructure (cycle 0)
  • how to automate non regression tests: XP, T/BDD …​
  • spaghetti code ⇒ refactoring …​
  • frequent releases: continuous integration …​
  • what about documentation ???

V versus W

V
  • Requirements
  • Specifications
  • General and detailed design
  • Coding and (unit) testing
  • Integration and (integration) testing
  • Release

V versus W (suite)

W
  • Cycle 0
  • Cycle 1 .. N

    • chose several features
    • …​ code/test …​
    • release
    • adjust expectations

What is important

  • Plan (more or less) next actions
  • Do as planned
  • Regularly evaluate progress towards the target

Evaluate progress towards the target

An important artifact to assess progress: tests!

Whatever the methodology, the project should address 'unit testing' and 'integration testing'.

You should
  • systematically write testing programs
  • execute them regularly

Ready for a quizz?

tuxteacher

Ready for a quizz?

QUESTION

/